package BD;

import java.sql.*;

/**
 *
 * @author Yalile Bermudes
 */
public class Conexion {

    protected Connection con;
    /**
     * Variables necesarias para la conexion a la base de datos: Driver,
     * direccion, usuario de la base de datos y contraseña de la base de datos
     */
    private String driver = "org.postgresql.Driver";
    private String dir = "jdbc:postgresql://localhost:5432/postgres";
    private String user = "postgres";
    private String pass = "yalile";

    public Conexion() {
    }

    boolean conectar() {
        boolean errorDriver = false;
        boolean conexionExitosa = true;

        try {
            Class.forName(driver);
        } catch (ClassNotFoundException ce) {
            System.out.println("Error en el Driver");
            errorDriver = true;
            conexionExitosa = false;
        }

        if (!errorDriver) {
            try {
                con = DriverManager.getConnection(dir, user, pass);
                System.out.println("conexion exitosa");
            } catch (SQLException ex) {
                System.out.println("Error al conectarse a la Base de Datos del sistema");
                conexionExitosa = false;
            }
        }
        return conexionExitosa;
    }

    /**
     * Esta resube cualquier consulta que se necesite un resultado de la base de datos.
     * @param consulta Consulta SQL que se desea realizar
     * @return ResulSet, Resultado de la consulta a la base de datos
     */
    ResultSet ejecutarConsulta(String consulta) {

        ResultSet resultado = null;
        try {
            PreparedStatement sentencia = con.prepareStatement(consulta);
            resultado = sentencia.executeQuery();


        } catch (SQLException ex) {
            System.out.println("Error al ejecutar consulta aqui");
            ex.printStackTrace();
        }

        return resultado;
    }
/**
 * Realiza alguna modificacion a la base de datos, como ingresar o modificar.
 * @param actualizacion Consulta SQL que se desea realizar
 * @return numero de lineas que se vieron afectadas con el cambio
 */
    int ejecutarActualizacion(String actualizacion) {
        int resultado = -1;

        try {
            Statement sentencia = con.createStatement();
            resultado = sentencia.executeUpdate(actualizacion);
        } catch (SQLException ex) {
            System.out.println("Error al ejecutar la actualizacion");
            ex.printStackTrace();
        }

        return resultado;
    }

    void desconectar() {
        try {
            con.close();
        } catch (SQLException eSQL) {
            System.out.println("Error al cerrar conexion");
        }
    }

    private Connection getConexion() {
        return con;
    }
}
